package beans;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import beans.exceptions.NotConnectedException;

import dao.InexistantEntityException;

import entities.Client;
import gestion.GestionnaireRemote;

@ManagedBean
@SessionScoped
public class SessionBean {
    
    /* ne marche pas car il est @RequestScoped, il faut utiliser un 'message' alternatif
    @ManagedProperty(value = "#{mainBean}")
    private MainBean mainBean;*/
    
    @EJB
    private GestionnaireRemote gestionnaire;
    
    private Integer clientId;
    
    private String message;
          

    //ne doit être utilisé que par les .xhtml, utiliser getSessionClientId dans le code Java
    public Integer getClientId() {
        return clientId;
    }

    public void setClientId(Integer clientId) {
        this.clientId = clientId;
    }           
        
    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    
    public void connexion()
    {
        message = null;
        
        try
        {
            if(clientId == null)
                throw new InexistantEntityException(Client.class, "null");
            
            Client client = (Client) gestionnaire.get(Client.class, clientId);
            clientId = client.getId(); //normalement c'est déjà le cas
        }
        catch(InexistantEntityException e)
        {
            clientId = null;
            message = e.toString();
        }
    }
    
    public void deconnexion()
    {
        message = null;
        clientId = null;
    }
    
    public int getSessionClientId() throws NotConnectedException
    {
        if(clientId == null)
            throw new NotConnectedException();

        return clientId;
    }
    
    //Utilisé sur infoSession.xhtml
    public String getClientNom() {
        
        message = null;

        if(clientId == null)
            return null;

        String clientNom = null;
        try 
        {
            Client client = (Client) gestionnaire.get(Client.class, clientId);
            clientNom = client.getNom();
            
        } catch (InexistantEntityException e) {
            message = e.toString();
        }
        
        return clientNom;
    }

}
